package com.boss.salary.service;

import com.alibaba.fastjson.JSONArray;
import com.boss.common.entity.PageDTO;
import com.boss.framework.dto.PaginationDTO;
import com.boss.salary.entity.AgencyInfo;
import com.boss.sys.ca.user.dto.UserDTO;

import java.util.List;
import java.util.Map;

/**
 * @author :李帅
 * date：2020/10/16
 */
public interface IAgencyInfoService {
    /**
     * 新增
     * @param agencyInfo
     */
    void insertAgencyInfo(AgencyInfo agencyInfo);

    /**
     * 根据id删除
     * @param queryParam
     */
    void deleteAgencyInfo(Map<String, Object> queryParam);
    /**
     * 修改
     * @param agencyInfo
     */
    void updateAgencyInfo(AgencyInfo agencyInfo);

    /**
     * 修改
     * @param agencyInfo
     */
    void updateAgencyInfoIsPaymentAgency(AgencyInfo agencyInfo);

    /**
     * 不需要审核的单位编辑
     * @param agencyInfo
     */
    void updateAgencyInfoAudit(AgencyInfo agencyInfo);

    /**
     * 分页查询
     * @param paginationDTO
     * @return
     */
    PageDTO<AgencyInfo> queryAgencyInfoPage(PaginationDTO paginationDTO, Map<String, Object> queryParam, List<String> childrenId);

    /**
     * 查询机构名称及其工资编报送审状态和审核状态
     * @param agencyId
     * @return
     */
    Map<String, Object> getAgencyNameAndState(String agencyId);

    /**
     * 获取用户信息
     * @param childrenId
     * @return
     */
    List<AgencyInfo> queryAgencyInfo(List<String> childrenId);

    /**
     * 根据id获取单位信息
     * @param queryParam
     * @return
     */
    List<AgencyInfo> queryAgencyInfoById(Map<String, Object> queryParam);

    /**
     * 获取单位树
     * @return
     */
    List<AgencyInfo> getAgencyTreeData(String agencyId,String mofDivCode);
    /**
     * 获取所有单位树包括删除的
     * @return
     */
    List<AgencyInfo> getAgencyTree(String agencyId,String mofDivCode);

    /**
     * 获取单位树(过滤财务已送审)
     * @return
     */
    List<AgencyInfo> getAgencyTreeDatas(String agencyId,UserDTO userDTO,String menuid);

    /**
     * 获取用户权限中第一个机构数据
     * @param agencyId
     * @return
     */
    Map<String, Object> getFirstAuthAgencyData(String agencyId);

    /**
     * 从权限中获取统发单位
     * @param jsonArray
     * @return
     */
    List<String> getSendSalaryAgencyId(JSONArray jsonArray,UserDTO userDTO);

    /**
     * 获取所有单位信息
     * @return
     */
    List<AgencyInfo> getAllAgency(UserDTO userDTO);
    /**
     * 根据id查询名字
     * @param id
     * @return
     */
    AgencyInfo getNameById(String id);

    /**
     * 根据isLeaf查询id
     * @return
     */
    List<String> getIds();

    /**
     * 根据agencyCode查询agencyId
     * @return
     */
    List<String> getAgencyIds(List<String> agencyCodes);

    /**
     * 获取单位树
     * @return
     */
    List<AgencyInfo> getNotAuditAuthAgencyTreeData(String agencyId,UserDTO userDTO,String menuid);

    int agencyPerson(String id);
}
